-
Notifications
You must be signed in to change notification settings - Fork 36
Update CONTRIBUTING.md to enhance build instructions and component-sp… #201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…ecific build guidance
tonygermano
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've got a couple suggestions, but overall this looks great. Thank you for contributing!
| cd server | ||
| ant -f mirth-build.xml dist | ||
| ``` | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe add a section about starting the server after building? I see further down you indicated that server/setup is where the application is "installed" post-build. As of #119 there will be an oieserver bash script for linux/mac developers and oieserver.ps1 powershell script for windows developers placed in server/setup to launch the server with that will correctly pick up the vmoptions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi, actually, I tried to start the client ... and the old java webstart was an issue. So i decided to upgrade the whole thing to a more recent JAVA, the 21. I updated the CONTRIBUTING.md to give running instructions. I added an oieclient script based on the oeiserver script.
https://github.com/charEtoile/engine/blob/update_sdk_to_21/CONTRIBUTING.md
I know that current tests fail, i am investigating.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As things currently stand, the project must compile with java 8, but the oieserver script requires the server is started with java 17 or higher. There are a couple work in progress PRs that will require java 17 for the build version, and 17 or higher for the runtime version.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK.
I reverted back to Java 8 and added instructions for Java 17 runtime. All build tests pass.
I also added the oieclient script. Hope this is enough.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@charEtoile, I like the idea, but please consider pulling oieclient.sh into a separate PR. CONTRIBUTING.md certainly needs updates, but the resounding runtime pattern is to use a launcher to start the client. Changing that is a much larger change than documentation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will split the PR for the oeiclient.s script and its associated documentation. I focus mainly on dev, not necessarily on production, so maybe I should state somewhere that the script is provided as a convenience for developers rather than for use in production.
…ption -DdisableTests=true
…cy (make it run with 17.0.17.fx-zulu)
…n instructions; add images for client GUI
tonygermano
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I haven't given a full review to the oieclient script yet. I'm not confident it is included in the correct place, but I can see how it could be useful during development, as there are other similar scripts already floating around.
I think rather than /server/base-includes that /tools/client-launcher or something similar may be a more appropriate location, but I'll wait for others to weigh in on that. I don't think it's a script that we want to ship with the installer, as it's very uncommon to launch the client from the server host in production, especially for a non-windows server. Typically, once the server is launched, a standard client launcher tool is used to connect. See https://docs.openintegrationengine.org/launchers/. Most of us use Ballista during development.
I also like the additional detail you've added about running the client since my last review, but I wonder if that is too much for the contributing guide and would be better placed on the documentation site linked above. I requested the information on starting the server since that is slightly different when running the build yourself vs installing the release, but the launching the client does not need to be different than in production. I'll let others provide feedback on this as well.
|
|
||
| # Launch Open Integration Engine (as this PID with exec) | ||
| echo "Starting Open Integration Engine..." | ||
| echo "$FINAL_JAVA_CMD ${JAVA_OPTS[*]}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this line should be removed. Potentially it could require a verbose flag, but I think that change would belong in a different PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll see if I can add a verbose flag.
|
|
||
| # Use the Java version specified in .sdkmanrc (located in project root) | ||
| # This ensures server runtime matches the build environment | ||
| -java-cmd ${HOME}/.sdkman/candidates/java/17.0.17.fx-zulu/bin/java |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should not be added here. This file is included in the full release where the user is likely to not be using sdkman and does not have access to the project root.
mgaffigan
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I love the intent and think you are going in a good direction. I think there are some changes needed, though:
- Please split the oieclient and launcher changes to separate PR's to avoid delaying merge of the documentation changes. Current norm would be to use a launcher. Popular ones are MCAL, Ballista, and BridgeLink.
- Focus on getting the contributor up and running in contributor.md, and reference the other published documentation without duplication.
- Define a single golden track that the contributor can follow to get a working build.
- Details and nuance on various topics would belong in the documentation website/repo, with perhaps a link in getting started.
- sdkman install should be from sdkman themselves.
- Build timeline and normal outputs might come from a reference to github actions build or to a blog article.
| OIE specifies the working versions of Java and Ant in [.sdkmanrc](./.sdkmanrc). To take advantage of this, install [SDKMAN](https://sdkman.io/) and run `sdk env install` | ||
| in the project's root directory. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are we moving away from sdk env install?
| # Install SDKMAN (if not already installed) | ||
| curl -s "https://get.sdkman.io" | bash | ||
| source "$HOME/.sdkman/candidates/java/current/bin/java" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would not repeat installation guidance given that it may change - perhaps a link to the relevant documentation.
|
|
||
| **Set build-time Java:** | ||
| ```bash | ||
| sdk use java 8.0.442.fx-zulu |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should not be required with sdk env install
| ant -version # Should show Ant 1.10.14 | ||
| ``` | ||
|
|
||
| > **Important:** After building with Java 8, you'll need Java 17+ with JavaFX (`17.0.17.fx-zulu` or higher) to run the server and client. The runtime Java is specified in `conf/custom.vmoptions` for the server and `oieclient.vmoptions` for the client. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Server runtime java can also be configured by OIE_JAVA_HOME or by other means - not sure this should be in the getting started. Probably should be in the documentation for oieserver or similar.
| > **Note:** This build takes approximately 2 minutes 20 seconds on a MacBook Pro M4 Pro. | ||
| This will: | ||
| - Build Donkey (message processing engine) | ||
| - Build Server extensions | ||
| - Build Client | ||
| - Build Manager | ||
| - Build CLI (Command Line Interface) | ||
| - Run all tests | ||
| - Create the complete setup in `server/setup/` | ||
|
|
||
| **Fast Build (Skip Tests)** | ||
| ```bash | ||
| cd server | ||
| ant -f mirth-build.xml -DdisableSigning=true -DdisableTests=true | ||
| ``` | ||
|
|
||
| > **Note:** This build takes approximately 10-11 seconds on a MacBook Pro M4 Pro. | ||
| Use this for faster builds during development when you don't need to run the full test suite. | ||
|
|
||
| **Full Build (Signed - for releases)** | ||
| ```bash | ||
| cd server | ||
| ant -f mirth-build.xml | ||
| ``` | ||
|
|
||
| **Create Distribution Package** | ||
| ```bash | ||
| cd server | ||
| ant -f mirth-build.xml dist | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is all good information, but probably does not need to be in the getting started. Perhaps in build system documentation. Not sure about including normative build speed - it's a figure that is unlikely to be updated over time, and will get out of date.
| cd server | ||
| ant -f mirth-build.xml dist | ||
| ``` | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@charEtoile, I like the idea, but please consider pulling oieclient.sh into a separate PR. CONTRIBUTING.md certainly needs updates, but the resounding runtime pattern is to use a launcher to start the client. Changing that is a much larger change than documentation.
|
|
||
| Alternatively, install GNU tar on macOS: | ||
| ```bash | ||
| brew install gnu-tar |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 for brew install gnu-tar. More options = more problems. I don't think release procedures need to be in the quick start at all, let alone for Mac OS specifically.
|
|
||
| #### Packaging | ||
|
|
||
| After building, you can create a distribution tarball: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: this does not include installers. Installers are published using install4j, which requires a license to build.
| gtar czf openintegrationengine.tar.gz -C server/ setup --transform 's|^setup|openintegrationengine/|' | ||
| ``` | ||
|
|
||
| #### Build Individual Components |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is needed for quick-start. Maybe in some IDE configuration documentation under. Quick start should be focused on getting started quickly, not efficiency. Deliver value to the contributor, and they will keep reading on how to become efficient.
Update CONTRIBUTING.md to enhance build instructions